From 1e346e3f47660883cf7618b8a62831b04b81ddce Mon Sep 17 00:00:00 2001 From: Gianni Tedesco Date: Thu, 28 Oct 2010 12:02:22 +0100 Subject: [PATCH] libxl: fix dom0 minimum memory threshold check libxl_set_memory_target tries to set the memory target for a given domain to new_target_memkb. The function includes a check to make sure that dom0's memory is not reduced below a minimal threshold ie. LIBXL_MIN_DOM0_MEM. However, this check is performed before the new_target_memkb variable is properly initialised - when the value is always zero. This means that the check always fails. Fix this by moving the test to happen after the proper initialisation of new_target_memkb. Signed-off-by: Gianni Tedesco Acked-by: Stefano Stabellini Signed-off-by: Ian Jackson --- tools/libxl/libxl.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index beb100c80f..1a4caea0e3 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2927,12 +2927,6 @@ retry_transaction: abort = 1; goto out; } - if (!domid && new_target_memkb < LIBXL_MIN_DOM0_MEM) { - LIBXL__LOG(ctx, LIBXL__LOG_ERROR, - "new target for dom0 is below the minimum threshold\n"); - abort = 1; - goto out; - } if (relative) new_target_memkb = current_target_memkb + target_memkb; @@ -2946,6 +2940,13 @@ retry_transaction: goto out; } + if (!domid && new_target_memkb < LIBXL_MIN_DOM0_MEM) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "new target %d for dom0 is below the minimum threshold\n", + new_target_memkb); + abort = 1; + goto out; + } videoram_s = libxl__xs_read(&gc, t, libxl__sprintf(&gc, "%s/memory/videoram", dompath)); videoram = videoram_s ? atoi(videoram_s) : 0; -- 2.30.2